package com.kapcb.assemble.filter;

import com.kapcb.assemble.base.AssembleExecutor;

import java.util.function.BiConsumer;

/**
 * <a>Title: FilterAssembleExecutor </a>
 * <a>Author: Kapcb <a>
 * <a>Description: 过滤器执行器 <a>
 *
 * @author Kapcb
 * @version 1.0
 * @date 2024/4/18 21:06
 * @since 1.0
 */
public interface FilterAssembleExecutor extends AssembleExecutor {

    /**
     * 执行普通过滤器
     *
     * @param type     过滤器链类型
     * @param request  入参
     * @param response 出参
     */
    void execute(String type, FilterRequest request, FilterResponse response);

    /**
     * 执行带目标方法的过滤器
     *
     * @param type         过滤器链类型
     * @param request      入参
     * @param response     出参
     * @param targetMethod 目标方法
     */
    void execute(String type, FilterRequest request, FilterResponse response, BiConsumer<FilterRequest, FilterResponse> targetMethod);
}
